chore: upgrade yarn to v4 (berry) and add node 22 ci tests#11
Merged
Conversation
frostevent
approved these changes
Jul 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Upgrades tooling to Yarn 4 (Berry) and adds a Node 22 + 24 CI test matrix, bringing
x401-node in line with proof-vc-common. Also refreshes Dependabot config and the
Node-version docs.
Changes
Yarn 1 → 4.17.0 (Berry)
packageManager: [email protected]+.yarn/releases/yarn-4.17.0.cjs; runthrough Corepack.
.yarnrc.yml:nodeLinker: node-modules,enableImmutableInstalls,enableScripts: false(no postinstall scripts),npmMinimalAgeGate: 1w,enableGlobalCache.yarn.lockin the Berry format.publish.yml: addcorepack enable, drop--frozen-lockfile(immutable installsare the default now).
.gitignore/.prettierignoreupdated for the Berry layout (keep.yarn/releasesetc., ignore.yarn/*andspec/).eslint.config.js→eslint.config.mjs.@types/node ^25.9.1 → ^24.13.2,eslint ^10.4.0 → ^10.5.0,typescript-eslint ^8.61.0 → ^8.62.0.CI: Node 22 + 24 test matrix
testjob intotest-matrix(runsyarn teston Node 22 and 24) and anaggregate
testgate (needs: test-matrix,if: always()).testfor the branch ruleset,so the matrix legs (
test (22)/test (24)) don't need to be enumerated in branchprotection.
always()makes a cancelled leg fail the gate rather than pass silently..node-version.Dependabot
cooldown(matchesnpmMinimalAgeGate).@types/nodemajor bumps so it tracks the active LTS (24), not latest.Docs
CLAUDE.mdRule 7:engines.node >=22is the consumer floor (dist uses onlylong-stable globals); dev/CI run on Node 24; the CI matrix now verifies the floor at
runtime. Note that the Node 22 leg resolves to the latest 22.x because the native
.tstest runner needs default type stripping (Node >=22.18) — don't pin the low legbelow that.
CONTRIBUTING.md: fix the requirement (was>=24, now>=22published floor withdev on 24) and document the CI matrix.
Rationale
engines.nodestays at>=22.0.0— the consumer floor, since the shippeddistonlyuses long-stable globals and runs on any maintained LTS.
@types/nodetracks the dev /active-LTS line (24); the runtime floor is now guarded by the CI matrix rather than the
type version.
Test plan
teston Node 22 and 24.yarn test→ 32 pass;yarn build && yarn publint→ clean.